/* 精选地点 */
var Tool = require('../common/tool.js');
var Page = require('./page.js');
var AddressItem = require('./item.js');
var SeltList = require('./list.js');
var AddressList = React.createClass({
    getInitialState:function(){
        return {
            placeList:[], // 地点列表
            selectList:[], // 精选地点列表
            selectListBk:[], // 精选地点列表备份
            selectIds:[] // 精选地点的ID
        }
    },
    componentDidMount:function(){
        // 请求第一页的数据及上次精选的地点。
        // debugger;
        this.getPlaceList(1);
        this.getSelectList();
    },
    // page切换- 父组件传递方法给子组件调用。或者redux?
    select:function(page){
        // alert('paged'+ page);
        // 根据翻页重新请求数据。
        var self = this;
        this.getPlaceList(page);
        
    },

    // 请求地点列表
    getPlaceList:function(page){
        var self = this;

        if(page==2){
            Tool.get('/place/page2', {page:page}).then(function(data){
                self.setState({
                    placeList: data.locations.list,
                    pageNum:data.locations.pages
                })
            });
        }else{
            Tool.get('/place/all', {page:page}).then(function(data){
                self.setState({
                    placeList: data.locations.list,
                    pageNum:data.locations.pages
                })
            });
        }
    },

    // 请求初次精选地点
    getSelectList:function(){
        // debugger;
        var self = this;
        Tool.get('/place/feature').then(function(data){
            var _ids = self.getArrayObjId(data.locations.list);
            self.setState({
                selectList:data.locations.list,
                selectListBk:data.locations.list,
                selectIds:_ids
            });
            
        });
    },
    getArrayObjId:function(objArray){
        var arr = [];
        objArray.map(function(item){
            arr.push(item.id);
        });
        return arr;
    },

    // 确认/取消精选
    selectItem:function(item){
        // debugger;
        var _arr = JSON.parse(JSON.stringify(this.state.selectIds));
        var _arrSelect = JSON.parse(JSON.stringify(this.state.selectList));
        var _itmId = this.getArrayObjId(_arrSelect);
        var _index2 = _itmId.indexOf(item.id);

        var _index = _arr.indexOf(item.id);
        if(_index > -1){
            // 更新精选列表id
            _arr.splice(_index, 1);

            this.setState({
                selectIds: _arr,

            });
        }else{
            _arr.push(item.id);
           // 更新精选列表id
           this.setState({
               selectIds: _arr
           });
        }
        // 更新精选列表
        if(_index2 > -1 ){
            _arrSelect.splice(_index2, 1);
            this.setState({
                selectList: _arrSelect
            })
        }else{
            _arrSelect.push(item);
            this.setState({
                selectList: _arrSelect
            })
        }
    },
    // 发布
    pub:function(){
        var self = this;
        var _data = this.state.selectList.map(function(item){
            return item.id;
        });
        if(!_data.length) return alert("发布不能为空");
        else{
            Tool.postJSON("/place/feature", _data).then(function(data){
                var _tmp = JSON.parse(JSON.stringify(self.state.selectList));
                var _ids = self.getArrayObjId(self.state.selectList);
                self.setState({
                    selectListBk:_tmp,
                    selectIds: _ids
                });
                alert("发布成功");
            })  

        }
    },
    // 取消
    back:function(){
        var _idsBk = this.getArrayObjId(this.state.selectListBk);
        var _temp = JSON.parse(JSON.stringify(this.state.selectListBk));
        this.setState({
            selectList: _temp,
            selectIds: _idsBk
        })
    },
    render:function(){
        // debugger
        var self = this;
        return (
            <div>
                <p>Address</p>
                <div className="list-left">
                {
                    /* 为啥这里写this.state.items在第一个初始化的时候不行尼，在componentWillReceiveProps里面得不到this.props.item的值 */
                    this.state.placeList.map(function(item){ 
                        var _index = self.state.selectIds.indexOf(item.id);
                        var check = _index > -1 ? true : false;
                        return( <AddressItem addr={item} check={check} selectItem={self.selectItem}/> )
                    })
                }
                </div>
                <div className="list-right">
                <SeltList pub={this.pub} back={this.back} />
                
                {
                    this.state.selectList.map(function(item){
                        var _index = self.state.selectIds.indexOf(item.id);
                        var check = _index > -1 ? true : false;
                        return (<AddressItem addr={item} check={check} selectItem={self.selectItem} />)
                    })
                }
                </div>
                <Page total={this.state.pageNum} items={this.state.placeList} select={this.select} />
            </div>
        )
    }
});

module.exports = AddressList;